package test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import pojo.Test1;
      
    public class WeightRandom {  
        static List<WeightCategory>  categorys = new ArrayList<WeightCategory>();  
        private static Random random = new Random();  
          
        public static void initData() {  
            WeightCategory wc1 = new WeightCategory("A",50);  
            WeightCategory wc2 = new WeightCategory("B",30);  
            WeightCategory wc3 = new WeightCategory("C",20);
            WeightCategory wc4 = new WeightCategory("D",60);
            WeightCategory wc5 = new WeightCategory("e",125);
            WeightCategory wc6 = new WeightCategory("f",254);
            categorys.add(wc1);  
            categorys.add(wc2);  
            categorys.add(wc3); 
            categorys.add(wc4);
            categorys.add(wc5);
            
            Test1 t = new Test1();
            categorys.add(wc6);
            
        }  
      
        public static void main(String[] args) {  
              initData();  
              Integer weightSum = 0;  
              for (WeightCategory wc : categorys) {  
                  weightSum += wc.getWeight();  
              }  
      
              if (weightSum <= 0) {  
               System.err.println("Error: weightSum=" + weightSum.toString());  
               return;  
              }
              Integer n = random.nextInt(weightSum); // n in [0, weightSum)  
              System.out.println("随机数："+n);
              Integer m = 0;  
              for (WeightCategory wc : categorys) {  
                   if (m <= n && n < m + wc.getWeight()) {  
                     System.out.println("This Random Category is "+wc.getCategory());  
                     break;  
                   }
                   m += wc.getWeight();  
              }  
      
                
        }  
      
    }  
      
    class WeightCategory {  
        private String category;  
        private Integer weight;  
          
      
        public WeightCategory() {  
            super();  
        }  
      
        public WeightCategory(String category, Integer weight) {  
            super();  
            this.setCategory(category);  
            this.setWeight(weight);  
        }  
      
      
        public Integer getWeight() {  
            return weight;  
        }  
      
        public void setWeight(Integer weight) {  
            this.weight = weight;  
        }  
      
        public String getCategory() {  
            return category;  
        }  
      
        public void setCategory(String category) {  
            this.category = category;  
        }  
    }  